perm filename EGRAPH.SAI[PIC,HE] blob
sn#430336 filedate 1979-04-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY NPLOT
C00003 00003 INTERNAL PROCEDURE NPLOT(INTEGER BUF,ACCUM,MASKBUF)
C00007 00004 END "EGRAPH"
C00008 ENDMK
C⊗;
ENTRY NPLOT;
BEGIN "EGRAPH"
REQUIRE "36A" COMPILER!SWITCHES;
REQUIRE "BUFDEC.SAI" SOURCE!FILE;
REQUIRE "GRAPH.DCL" SOURCE!FILE;
EXTERNAL INTEGER TEKWHERE;
INTEGER PTR,BUF,I,J,IMAX,VAL,MINV,MAXV,CMINV,CMAXV,AMAX;
INTEGER TOT;
integer yz,graph,xz,xinc,yinc,x,temp,y,oldx,oldy,xi,curx,cury;
real xscal,yscal;
INTEGER GXSIZ,GYSIZ,GXSCAL,GYSCAL,GXADD,GYADD,GXTOT,GYTOT;
INTERNAL PROCEDURE NPLOT(INTEGER BUF,ACCUM,MASKBUF);
BEGIN "NPLOT"
INTEGER ARRAY PICNOR[0:2↑bytsz(buf)];
INTEGER I,J,RWS,COLS,BYT;
INTEGER TMAXV;
AMAX←0;
RWS←ROWS(BUF); COLS←COLMS(BUF); BYT←2↑BYTSZ(BUF)-1;
MINV←BYT; MAXV←0;
limit(buf,picnor,MINV,MAXV,TOT←0,IF MASKBUF=-1 THEN 0 ELSE -1,IF MASKBUF=-1 THEN 0 ELSE MASKBUF);
IF ACCUM<0 THEN FOR I←MINV STEP 1 UNTIL MAXV DO PICNOR[I]←AMAX←PICNOR[I]+AMAX
ELSE FOR I←MINV STEP 1 UNTIL MAXV DO AMAX←AMAX MAX PICNOR[I];
IF ABS(ACCUM)>0 THEN BEGIN ! PRINT RESULTS ONLY;
SPRMPT("FILE ONLY (F) TERMINAL ONLY (T) OR BOTH (B)",SDUM←"F");
SZILCH←GETPRINT;
SETPRINT("",SDUM);
FOR I←MINV THRU MAXV DO PRINT(I,": ",PICNOR[I],CRLF);
SETPRINT("",SZILCH);
END;
IF ABS(ACCUM)=1 THEN RETURN;
SZILCH←"MINV: "&CVS(MINV)&" MAXV: "&CVS(TMAXV←MAXV);
PCTR(TEKWHERE);
INITT(450);
GXSIZ←2212; GYSIZ←2212;
GXSCAL←1862; GYSCAL←1862;
GXADD←231; GYADD←231;
GXTOT←GXSCAL+GXADD;
GYTOT←GYSCAL+GYADD;
YZ←0;
VWINDO(-511.0,2212.0,-511.0,2212.0);
YZ←-511;
XZ←-511;
XINC←FNDINC(MAXV,MINV);
MAXV←MAXV MIN 4096;
YINC←FNDINC(AMAX,ZILCH←0);
XSCAL←GXSCAL/(MAXV-MINV);
YSCAL←GYSCAL/AMAX;
SETPNT(XZ+GXADD,YZ+GYADD);
VISVEC(GXSCAL,0);
FOR X←MINV STEP XINC UNTIL MAXV DO
BEGIN
TEMP←XZ+GXADD+(X-MINV)*XSCAL;
SETPNT(TEMP,YZ+GYADD);
VISVEC(0,28);
SETPNT(ZILCH←TEMP-70,DUM←YZ+GYADD-105);
ARDSTR(CVS(X));
END;
SETPNT(XZ+GXADD,YZ+GYADD);
VISVEC(0,GYSCAL);
FOR Y←0 STEP YINC UNTIL AMAX DO
BEGIN
TEMP←GYADD+Y*YSCAL;
SETPNT(XZ+GXADD-28,YZ+TEMP);
VISVEC(28,0);
SETPNT(ZILCH←XZ,DUM←TEMP+YZ-35);
ARDSTR(CVS(Y));
END;
SETPNT(ZILCH←XZ+(GXSCAL%4),DUM←GYSIZ+YZ);
ARDSTR(SZILCH);
OLDX←XZ+GXADD; OLDY←(GYADD+PICNOR[MINV]*YSCAL)+YZ;
XI←(MAXV-MINV)%GYTOT+1;
setpnt(oldx,oldy);
FOR X←MINV+1 STEP XI UNTIL TMAXV DO
BEGIN
CURX←XZ+GXADD+(X-MINV)*XSCAL;
CURY←(GYADD+PICNOR[X]*YSCAL)+YZ;
VISVEC(CURX-OLDX,CURY-OLDY);
OLDX←CURX; OLDY←CURY;
END;
ENDPCT;
END "NPLOT";
END "EGRAPH"